/**
 * Copyright 2011 Joe Choi, All rights reserved.
 */
package tao.pattern.observer;

/**
 * The Observable interface is designed as an observable subject of Observer pattern
 * 
 * @author Joe Choi
 * @version 1.0.0
 */
public interface Observable<E> {
	/**
	 * Register specific observer to the subject
	 */
	public void register(Observer<E> observer);

	/**
	 * Remove the specific observer from list of observer
	 */
	public Observer<E> remove(Observer<E> observer);
	
	/**
	 * Notify all the observers with the event which be concerned 
	 */
	public void notifyObserver(E event);
}
